package com.cg.design.graphicdesignpattern.abstractfactory.factory;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;

/**
 * 抽象的产品：Page类(抽象的表示HTML页面的类)
 *
 * @program: LeetCode->Page
 * @description: 抽象的产品：Page类(抽象的表示HTML页面的类)
 * @author: cg
 * @create: 2022-03-21 20:48
 **/
public abstract class Page {
    /**
     * 页面标题
     */
    protected String title;

    /**
     * 页面作者
     */
    protected String author;

    /**
     * 用于存放页面内容
     */
    protected ArrayList<Item> content = new ArrayList();

    public Page(String title, String author) {
        this.title = title;
        this.author = author;
    }

    public void add(Item item) {
        content.add(item);
    }

    /**
     * 生成HTML文件
     */
    public void output() {
        try {
            String fileName = title + ".html";
            Writer writer = new FileWriter(fileName);
            writer.write(this.makeHtml());
            writer.close();
            System.out.println(fileName + "编写完成");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * makeHTML()抽象方法
     * @return 返回HTML文件的内容
     */
    public abstract String makeHtml();

}
